﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.Specialized;
using Inmobiliaria.Presenters.ViewInterfaces;
using Inmobiliaria.UCControllers;
using Inmobiliaria.Base;
using Inmobiliaria.Services.Core.DTO;
using System.Net.Mail;
using System.Net;
using System.Text.RegularExpressions;
using System.IO;
using System.Web;
//using System.Drawing.Imaging;
//using System.Drawing;


namespace Inmobiliaria.Presenters.WFPresenters
{
    public class RegistroInmueblePresenter : Presenter, IViewSINO
    {
        private IViewRegistroInmuebleParticular viewRegistroInmueble;
        public RegistroInmueblePresenter(IViewRegistroInmuebleParticular view)
            : base(view)
        {
            viewRegistroInmueble = view;

        }
        public override void InitView(NameValueCollection queryString)
        {
            viewRegistroInmueble.TipoInmueble = RegistroInmuebleParticularUC.CargarCombo();
            viewRegistroInmueble.Provincias = RegistroInmuebleParticularUC.CargarComboProvincias();
            string[] Habitacion = ValoresConstantes.Numeros;
            viewRegistroInmueble.Habitaciones = Habitacion;
            string[] Baño = ValoresConstantes.Numeros;
            viewRegistroInmueble.Baños = Baño;
            string[] Transaccion = ValoresConstantes.TipoTransaccion;
            viewRegistroInmueble.Transacciones = Transaccion;

        }
        public void CargarComboLocalidades()
        {
            RegistroInmuebleParticularUC _registroInmueble = new RegistroInmuebleParticularUC();
            int id = viewRegistroInmueble.Provincia;
            viewRegistroInmueble.Localidades = _registroInmueble.CargarComboLocalidades(id);

        }
        public void CargarComboBarrio()
        {
            RegistroInmuebleParticularUC _registroInmueble = new RegistroInmuebleParticularUC();
            int id = viewRegistroInmueble.Localidad;
            viewRegistroInmueble.Barrios = _registroInmueble.CargarComboBarrios(id);
        }
        public void Registrar()
        {
            RegistroInmuebleParticularUC _registroInmueble = new RegistroInmuebleParticularUC();
            BuscarPersona(GetPlanilla());
        }
        private void BuscarPersona(DtoPlanillaInmueble planilla)
        {
            buscarPersona(planilla);
        }
        public static int idPersona;
        public void buscarPersona(DtoPlanillaInmueble planilla)
        {
            int persona = BuscarPer(planilla.Apellido, planilla.Nombre, planilla.Email);
            idPersona = persona;

            if (persona > 0)
            {
                // viewRegistroInmueble.ShowQuestion(Inmobiliaria.Presenters.Mensajes.Pregunta);
                RegistroInmuebleParticularUC _registroInmueble = new RegistroInmuebleParticularUC();
                _registroInmueble.UpdatePersona(idPersona, planilla);
                viewRegistroInmueble.ShowMessage(Inmobiliaria.Presenters.Mensajes.OperacionExitosa);
                MandarEmail(planilla);
            }
            else
            {
                RegistroInmuebleParticularUC _registroInmueble = new RegistroInmuebleParticularUC();
                _registroInmueble.GuardarPersona(planilla);
                MandarEmail(planilla);
                viewRegistroInmueble.ShowMessage(Inmobiliaria.Presenters.Mensajes.OperacionExitosa);
            }
        }
        public int BuscarPer(string apellido, string nombre, string mail)
        {
            RegistroInmuebleParticularUC _registroInmueble = new RegistroInmuebleParticularUC();
            return _registroInmueble.BuscarPersonaExistente(apellido, nombre, mail);
        }
        public DtoPlanillaInmueble GetPlanilla()
        {
            DtoPlanillaInmueble planilla = new DtoPlanillaInmueble();
            /////Persona
            planilla.Vendedor = "PARTICULAR";
            planilla.Apellido = viewRegistroInmueble.Apellido;
            planilla.Nombre = viewRegistroInmueble.Nombre;
            planilla.CodCelular = viewRegistroInmueble.CodCelular;
            planilla.Celular = viewRegistroInmueble.NumeroCelular;
            planilla.CodTelefono = viewRegistroInmueble.CodTelefono;
            planilla.Telefono = viewRegistroInmueble.NumeroTelefono;
            planilla.Email = viewRegistroInmueble.Email;
            planilla.Email2 = viewRegistroInmueble.Email2;

            /////Inmueble
            planilla.TipoInmueble = viewRegistroInmueble.tipoInmueble;
            planilla.Transaccion = viewRegistroInmueble.Transaccion;
            planilla.Provincia = viewRegistroInmueble.Provincia;
            planilla.Localidad = viewRegistroInmueble.Localidad;
            planilla.Barrio = viewRegistroInmueble.Barrio;
            planilla.Calle = viewRegistroInmueble.Calle;
            planilla.Altura = viewRegistroInmueble.Altura;
            planilla.Lote = viewRegistroInmueble.Lote;
            planilla.SuperficieCubierta = viewRegistroInmueble.SuperficieCubierta;
            planilla.Habitaciones = viewRegistroInmueble.Habitacion;
            planilla.Baños = viewRegistroInmueble.Baño;
            planilla.Agua = viewRegistroInmueble.Agua;
            planilla.Asfalto = viewRegistroInmueble.Asfalto;
            planilla.Balcon = viewRegistroInmueble.Balcon;
            planilla.Cloacas = viewRegistroInmueble.Cloacas;
            planilla.Cocina = viewRegistroInmueble.Cocina;
            planilla.Comedor = viewRegistroInmueble.Comedor;
            planilla.Descripcion = viewRegistroInmueble.Descripcion;
            planilla.Gas = viewRegistroInmueble.Gas;
            planilla.Jardin = viewRegistroInmueble.Jardin;
            planilla.Living = viewRegistroInmueble.Living;
            planilla.Luz = viewRegistroInmueble.Luz;
            //planilla.Parrilla = viewRegistroInmueble.Parrilla;
            planilla.Patio = viewRegistroInmueble.Patio;
            planilla.Quincho = viewRegistroInmueble.Quincho;
            planilla.TelefonoInmueble = viewRegistroInmueble.TelefonoInmueble;
            planilla.Terraza = viewRegistroInmueble.Terraza;
            planilla.ValorInmueble = viewRegistroInmueble.ValorInmueble;
            planilla.Dolar = viewRegistroInmueble.Dolar;
            planilla.Pesos = viewRegistroInmueble.Pesos;
            if (planilla.Dolar != "" & planilla.Pesos != "")
            {

                //viewRegistroInmueble.ShowError(Inmobiliaria.Presenters.Mensajes.OperacionExitosa);

            }
            if (planilla.Dolar != "")
            {
                planilla.TipoMoneda = planilla.Dolar;
            }
            if (planilla.Pesos != "")
            {
                planilla.TipoMoneda = planilla.Pesos;
            }
            planilla.Foto1 = viewRegistroInmueble.FotoInmueble1;
            planilla.Foto2 = viewRegistroInmueble.FotoInmueble2;
            planilla.Foto3 = viewRegistroInmueble.FotoInmueble3;
            planilla.Foto4 = viewRegistroInmueble.FotoInmueble4;
            planilla.Foto5 = viewRegistroInmueble.FotoInmueble5;
            Validar(planilla);
            return planilla;
        }
        private void Validar(DtoPlanillaInmueble planilla)
        {
            StringBuilder errores = new StringBuilder();

            if (String.IsNullOrEmpty(planilla.Apellido))
            {
                errores.AppendLine(Recursos.Persona.ApellidoRequerido);
            }

            if (String.IsNullOrEmpty(planilla.Nombre))
            {
                errores.AppendLine(Recursos.Persona.NombreRequerido);
            }

            if (planilla.CodTelefono.Length > 0 && planilla.CodTelefono[0].ToString() == "0")
            {
                errores.AppendLine(Recursos.Persona.CodigoAreaTelefono);

            }
            if (planilla.CodTelefono.Length < 2 && planilla.CodTelefono.Length != 0)
            {
                errores.AppendLine(Recursos.Persona.CodigoAreaTelefono1);

            }

            if (planilla.CodTelefono.Length != 0 && planilla.Telefono.Length == 0)
            {
                errores.AppendLine(Recursos.Persona.TelefonoErroneo);

            }

            if (planilla.CodCelular.Length > 0 && planilla.CodCelular[0].ToString() == "0")
            {
                errores.AppendLine(Recursos.Persona.CodigoAreaCelular);

            }
            if (planilla.CodCelular.Length != 0 && planilla.Celular.Length != 0 && planilla.CodCelular.Length + planilla.Celular.Length != 10)
            {
                errores.AppendLine(Recursos.Persona.NumeroCelularErroneo);
            }

            if (planilla.CodCelular.Length < 2 && planilla.Celular.Length != 0)
            {
                errores.AppendLine(Recursos.Persona.CodigoAreaCelular1);
            }

            if (planilla.CodCelular.Length != 0 && planilla.Celular.Length == 0)
            {
                errores.AppendLine(Recursos.Persona.NumeroCelularErroneo1);
            }

            if (planilla.Email != planilla.Email2)
            {
                errores.AppendLine(Recursos.Persona.Email);
            }

            if (String.IsNullOrEmpty(planilla.Calle))
            {
                errores.AppendLine(Recursos.Planilla.CalleRequerido);
            }

            //if (String.IsNullOrEmpty(planilla.Altura))
            //{
            //    errores.AppendLine(Recursos.Planilla.AlturaRequerido);
            //}
            if (String.IsNullOrEmpty(planilla.Lote))
            {
                errores.AppendLine(Recursos.Planilla.LoteRequerido);
            }

            if (planilla.ValorInmueble != "" & planilla.TipoMoneda == null)
            {
                errores.AppendLine(Recursos.Planilla.TipoMonedaRequerido);
            }
            if (planilla.ValorInmueble == null & planilla.TipoMoneda != null)
            {
                errores.AppendLine(Recursos.Planilla.ValorInmueble);
            }

            if (!String.IsNullOrEmpty(errores.ToString()))
            {
                throw new ApplicationException(errores.ToString());
            }
        }
        public void MandarEmail(DtoPlanillaInmueble planilla)
        {
            Mail(planilla);
        }
        private void Mail(DtoPlanillaInmueble planilla)
        {
            string CuentaPropia = "<h1><b><p><Font color = Red>Para finalizar su publicación usted debe realizar un deposito bancario a la siguiente cuenta corriente.</Font></p></b></h1>" +
                "<h2><Font Size = 5>Banco: PATAGONIA</Font></h2>" +
                "<h3><Font Size = 5>Titular de la cuenta: IMOLI EL CAPO</Font> </h3>" +
                "<h4><Font Size = 5>Caja de ahorro en pesos: 22222222222</Font></h4>" +
                "<h5><Font Size = 5>CBU: 000000000000</Font></h5>" +
                "<h6><Font Size = 5>Monto a depositar: $100</Font></h6>";

            string PagoRealizado = "<h1><b><p><Font color = Red>Una vez que haya realizado el deposito responda el siguiente email completando los siguiente datos.</Font></p></b></h1>" +
                "<h2><Font Size = 5>Nro de transacción o Nro de Comprobante:</Font></h2>" +
                 "<h3><Font Size = 5>Fecha de Pago:</Font></h3>" +
                 "<h4><Font Size = 5>Importe Abonado:</Font></h4>" +
                 "<h5><Font Size = 5>Sucursal:</Font></h5>";

            int codigo = BuscarCodigoInmueble(planilla.Apellido, planilla.Nombre, planilla.Email);
            string Email = planilla.Email;
            //Configuración del Mensaje
            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
            //Especificamos el correo desde el que se enviará el Email y el nombre de la persona que lo envía
            mail.From = new MailAddress("leoimoli@gmail.com", "Leonel", Encoding.UTF8);
            //Aquí ponemos el asunto del correo
            mail.Subject = " SU CÓDIGO DE INMUEBLE ES '" + codigo + "' PASOS A SEGUIR";
            //Aquí ponemos el mensaje que incluirá el correo
            mail.Body = "'" + CuentaPropia + "''" + PagoRealizado + "'";
            mail.IsBodyHtml = true;
            //Especificamos a quien enviaremos el Email, no es necesario que sea Gmail, puede ser cualquier otro proveedor
            mail.To.Add(Email);
            //Si queremos enviar archivos adjuntos tenemos que especificar la ruta en donde se encuentran
            // mail.Attachments.Add(new Attachment(@"C:\Documentos\carta.docx"));
            //Configuracion del SMTP
            SmtpServer.Port = 587; //Puerto que utiliza Gmail para sus servicios
            SmtpServer.Timeout = 900000;
            //Especificamos las credenciales con las que enviaremos el mail
            SmtpServer.Credentials = new System.Net.NetworkCredential("leoimoli@gmail.com", "leo33244793");
            //SmtpServer.Host = "smtp.gmail.com";
            SmtpServer.EnableSsl = true;
            try
            {
                SmtpServer.Send(mail);
            }
            catch (Exception ex)
            {
            }
        }
        public int BuscarCodigoInmueble(string apellido, string nombre, string mail)
        {
            RegistroInmuebleParticularUC _registroInmueble = new RegistroInmuebleParticularUC();
            return _registroInmueble.BuscarCodigoInmueble(apellido, nombre, mail);
        }
        public void Si()
        {
            //RegistroInmuebleParticularUC _registroInmueble = new RegistroInmuebleParticularUC();
            //_registroInmueble.UpdatePersona(idPersona, GetPlanilla());
            //MandarEmail(GetPlanilla());
            //viewRegistroInmueble.ShowMessage(Inmobiliaria.Presenters.Mensajes.OperacionExitosa);
        }
        public void No()
        {

        }
        public void Volver()
        {
            HttpContext.Current.Response.Redirect("HomeWF.aspx");
        }
    }

}

